All files / util log.ts

68.29% Statements 28/41
56.25% Branches 9/16
83.33% Functions 5/6
64.86% Lines 24/37
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93                                    2x   2x 2x   2x   2x 2x 2x 2x       2x 3x   3x     3x     2x       2x         1x 1x   1x 1x               64609x 37727x           21x 21x 19x 19x                                        
/**
 * Copyright 2017 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
 
/* tslint:disable:no-console */
 
import { SDK_VERSION } from '../core/version';
import { AnyJs } from './misc';
import { PlatformSupport } from '../platform/platform';
import { Logger, LogLevel as FirebaseLogLevel } from '@firebase/logger';
 
const logClient = new Logger('@firebase/firestore');
 
export enum LogLevel {
  DEBUG,
  ERROR,
  SILENT
}
 
// Helper methods are needed because variables can't be exported as read/write
export function getLogLevel(): LogLevel {
  Iif (logClient.logLevel === FirebaseLogLevel.DEBUG) {
    return LogLevel.DEBUG;
  } else Iif (logClient.logLevel === FirebaseLogLevel.SILENT) {
    return LogLevel.SILENT;
  } else {
    return LogLevel.ERROR;
  }
}
export function setLogLevel(newLevel: LogLevel): void {
  /**
   * Map the new log level to the associated Firebase Log Level
   */
  switch (newLevel) {
    case LogLevel.DEBUG:
      logClient.logLevel = FirebaseLogLevel.DEBUG;
      break;
    case LogLevel.ERROR:
      logClient.logLevel = FirebaseLogLevel.ERROR;
      break;
    case LogLevel.SILENT:
      logClient.logLevel = FirebaseLogLevel.SILENT;
      break;
    default:
      logClient.error(
        `Firestore (${SDK_VERSION}): Invalid value passed to \`setLogLevel\``
      );
  }
}
 
export function debug(tag: string, msg: string, ...obj: AnyJs[]): void {
  Iif (logClient.logLevel <= FirebaseLogLevel.DEBUG) {
    const args = obj.map(argToString);
    logClient.debug(`Firestore (${SDK_VERSION}) [${tag}]: ${msg}`, ...args);
  }
}
 
export function error(msg: string, ...obj: AnyJs[]): void {
  if (logClient.logLevel <= FirebaseLogLevel.ERROR) {
    const args = obj.map(argToString);
    logClient.error(`Firestore (${SDK_VERSION}): ${msg}`, ...args);
  }
}
 
/**
 * Converts an additional log parameter to a string representation.
 */
function argToString(obj: AnyJs): string | AnyJs {
  if (typeof obj === 'string') {
    return obj;
  } else {
    const platform = PlatformSupport.getPlatform();
    try {
      return platform.formatJSON(obj);
    } catch (e) {
      // Converting to JSON failed, just log the object directly
      return obj;
    }
  }
}